package com.atguigu.field;

public class TestFatherAndSon {
    public static void main(String[] args) {
        Father f = new Son();//多态引用
        System.out.println("f.a = " + f.a);//f.a = 1
        /*
        多态引用后，如果不是调用方法，而是直接访问属性，那么不会遵循编译时看左边，运行时看右边的原则。
        而是遵循：只看编译时类型。
         */
        System.out.println("((Son)f).a = " + ((Son)f).a);//2
        Son s = (Son) f;
        System.out.println("s.a = " + s.a);//2

        System.out.println("====================");
        Son son = new Son();//本态引用
        System.out.println("son.a = " + son.a);//2
        System.out.println("((Father)son).a = " + ((Father)son).a);//1
        Father father = son;//向上转型
        System.out.println("father.a = " + father.a);
    }
}
